home *** CD-ROM | disk | FTP | other *** search
/ Chip 2004 December / 2004-12 CHIP.iso / CHIP / Porady / Srodowisko PHP-MySQL / WAMP5 1.3 / wamp5_1.3.exe / {app} / www / phpmyadmin / main.php < prev    next >
PHP Script  |  2004-09-24  |  30KB  |  747 lines

  1. <?php
  2. /* $Id: main.php,v 2.56 2004/09/07 16:54:15 lem9 Exp $ */
  3. // vim: expandtab sw=4 ts=4 sts=4:
  4.  
  5. /**
  6.  * Don't display the page heading
  7.  */
  8. define('PMA_DISPLAY_HEADING', 0);
  9.  
  10. /**
  11.  * Gets some core libraries and displays a top message if required
  12.  */
  13. require_once('./libraries/grab_globals.lib.php');
  14. require_once('./libraries/common.lib.php');
  15. // Puts the language to use in a cookie that will expire in 30 days
  16. if (!isset($pma_uri_parts)) {
  17.     $pma_uri_parts = parse_url($cfg['PmaAbsoluteUri']);
  18.     $cookie_path   = substr($pma_uri_parts['path'], 0, strrpos($pma_uri_parts['path'], '/'));
  19.     $is_https      = (isset($pma_uri_parts['scheme']) && $pma_uri_parts['scheme'] == 'https') ? 1 : 0;
  20. }
  21. setcookie('pma_lang', $lang, time() + 60*60*24*30, $cookie_path, '', $is_https);
  22. if (isset($convcharset)) {
  23.     setcookie('pma_charset', $convcharset, time() + 60*60*24*30, $cookie_path, '', $is_https);
  24. }
  25.  
  26. /**
  27.  * Includes the ThemeManager
  28.  */
  29. require_once('./libraries/select_theme.lib.php');
  30. // Defines the "item" image depending on text direction
  31. $item_img = $GLOBALS['pmaThemeImage'] . 'item_ltr.png';
  32. // Defines for MainPageIconic
  33. $str_iconic_list    = '';
  34. $str_iconic_colspan = '';
  35. $str_normal_list    = '<td valign="top" align="right" width="16"><img src="'.$item_img.'" border="0" hspace="2" vspace="5"></td>';
  36. if ($cfg['MainPageIconic']) {
  37.     $str_iconic_list .= "<td width=\"16\" valign=\"top\" align=\"center\" nowrap=\"nowrap\">%1\$s"
  38.                       . "<img src=\"" . $pmaThemeImage . "%2\$s\" border=\"0\" width=\"16\" height=\"16\" hspace=\"2\" alt=\"%3\$s\" />"
  39.                       . "%4\$s</td>";
  40.     $str_iconic_colspan .= ' colspan="2"';
  41. } else {
  42.     $str_iconic_list = '';
  43.     $str_iconic_colspan = ' colspan="2"';
  44. }
  45.  
  46. // Handles some variables that may have been sent by the calling script
  47. if (isset($db)) {
  48.     unset($db);
  49. }
  50. if (isset($table)) {
  51.     unset($table);
  52. }
  53. $show_query = '1';
  54. require_once('./header.inc.php');
  55. if (isset($message)) {
  56.     PMA_showMessage($message);
  57. }
  58. else if (isset($reload) && $reload) {
  59.     // Reloads the navigation frame via JavaScript if required
  60.     echo "\n";
  61.     ?>
  62. <script type="text/javascript" language="javascript1.2">
  63. <!--
  64. window.parent.frames['nav'].location.replace('./left.php?<?php echo PMA_generate_common_url('', '', '&');?>&hash=' + <?php echo (($cfg['QueryFrame'] && $cfg['QueryFrameJS']) ? 'window.parent.frames[\'queryframe\'].document.hashform.hash.value' : "'" . md5($cfg['PmaAbsoluteUri']) . "'"); ?>);
  65. //-->
  66. </script>
  67.     <?php
  68. }
  69. echo "\n";
  70.  
  71.  
  72. /**
  73.  * Displays the welcome message and the server informations
  74.  */
  75.  
  76. // note: for proper display of RTL languages, I removed the
  77. //       align="left" in the next <td> tag
  78. ?>
  79. <table border="0" cellpadding="0" cellspacing="0" width="100%">
  80.     <tr>
  81.         <td valign="top">
  82.         <h1>
  83.         <?php
  84.         echo sprintf($strWelcome, ' phpMyAdmin ' . PMA_VERSION . ''); 
  85.         ?>
  86.         </h1>
  87. <?php
  88. // Don't display server info if $server == 0 (no server selected)
  89. // loic1: modified in order to have a valid words order whatever is the
  90. //        language used
  91. if ($server > 0) {
  92.     // robbat2: Use the verbose name of the server instead of the hostname
  93.     //          if a value is set
  94.     if (!empty($cfg['Server']['verbose'])) {
  95.         $server_info = $cfg['Server']['verbose'];
  96.     } else {
  97.         $server_info = $cfg['Server']['host'];
  98.         $server_info .= (empty($cfg['Server']['port']) ? '' : ':' . $cfg['Server']['port']);
  99.     }
  100.     // loic1: skip this because it's not a so good idea to display sockets
  101.     //        used to everybody
  102.     // if (!empty($cfg['Server']['socket']) && PMA_PHP_INT_VERSION >= 30010) {
  103.     //     $server_info .= ':' . $cfg['Server']['socket'];
  104.     // }
  105.     $res                           = PMA_DBI_query('SELECT USER();');
  106.     list($mysql_cur_user_and_host) = PMA_DBI_fetch_row($res);
  107.     $mysql_cur_user                = substr($mysql_cur_user_and_host, 0, strrpos($mysql_cur_user_and_host, '@'));
  108.  
  109.     PMA_DBI_free_result($res);
  110.     unset($res, $row);
  111.  
  112.     $full_string     = str_replace('%pma_s1%', PMA_MYSQL_STR_VERSION, $strMySQLServerProcess);
  113.     $full_string     = str_replace('%pma_s2%', $server_info, $full_string);
  114.     $full_string     = str_replace('%pma_s3%', $mysql_cur_user_and_host, $full_string);
  115.  
  116.     echo '<p><b>' . $full_string . '</b></p>' . "\n";
  117. } // end if
  118.  
  119.  
  120. /**
  121.  * Reload mysql (flush privileges)
  122.  */
  123. if (($server > 0) && isset($mode) && ($mode == 'reload')) {
  124.     $result = PMA_DBI_query('FLUSH PRIVILEGES');
  125.     echo '<p><b>';
  126.     if ($result != 0) {
  127.         echo $strMySQLReloaded;
  128.     } else {
  129.         echo $strReloadFailed;
  130.     }
  131.     unset($result);
  132.     echo '</b></p>' . "\n\n";
  133. }
  134. ?>
  135.         </td>
  136.         <?php
  137.         if (@file_exists($pmaThemeImage . 'logo_right.png')) {
  138.             // td and img seems not to obey the general dir= of the html tag
  139.             if ($GLOBALS['text_dir'] == 'ltr') {
  140.                $tmp_align = 'right';
  141.             } else {
  142.                $tmp_align = 'left';
  143.             }
  144.             echo '        <td align="' . $tmp_align . '" valign="top">' . "\n";
  145.             echo '            <img src="' . $pmaThemeImage . 'logo_right.png" alt="phpMyAdmin - Logo" border="0" hspace="5" vspace="5" align="' . $tmp_align . '" />' . "\n";
  146.             echo '        </td>';
  147.         }
  148.         ?>
  149. </tr></table>
  150. <hr />
  151. <?php
  152.  
  153. /**
  154.  * Displays the MySQL servers choice form
  155.  */
  156. $show_server_left = FALSE;
  157. include('./libraries/select_server.lib.php');
  158.  
  159. // neted table needed
  160. ?>
  161. <table border="0" cellpadding="0" cellspacing="0">
  162. <tr>
  163. <td valign="top">
  164. <!-- MySQL and phpMyAdmin related links -->
  165. <?php
  166. /**
  167.  * Displays the mysql server related links
  168.  */
  169. $is_superuser        = FALSE;
  170.  
  171. if ($server > 0) {
  172.     // Get user's global privileges ($dbh and $userlink are links to MySQL
  173.     // defined in the "common.lib.php" library)
  174.     // Note: if no controluser is defined, $dbh contains $userlink
  175.  
  176.     $is_create_priv  = FALSE;
  177.     $is_process_priv = TRUE;
  178.     $is_reload_priv  = FALSE;
  179.  
  180. // We were checking privileges with 'USE mysql' but users with the global
  181. // priv CREATE TEMPORARY TABLES or LOCK TABLES can do a 'USE mysql'
  182. // (even if they cannot see the tables)
  183.     $is_superuser    = PMA_DBI_try_query('SELECT COUNT(*) FROM mysql.user', $userlink, PMA_DBI_QUERY_STORE);
  184.     if ($dbh) {
  185.         $local_query = 'SELECT Create_priv, Reload_priv FROM mysql.user WHERE ' . PMA_convert_using('User') . ' = ' . PMA_convert_using(PMA_sqlAddslashes($mysql_cur_user), 'quoted') . ' OR ' . PMA_convert_using('User') . ' = ' . PMA_convert_using('', 'quoted') . ';';
  186.         $rs_usr      = PMA_DBI_try_query($local_query, $dbh); // Debug: or PMA_mysqlDie('', $local_query, FALSE);
  187.         if ($rs_usr) {
  188.             while ($result_usr = PMA_DBI_fetch_assoc($rs_usr)) {
  189.                 if (!$is_create_priv) {
  190.                     $is_create_priv  = ($result_usr['Create_priv'] == 'Y');
  191.                 }
  192.                 if (!$is_reload_priv) {
  193.                     $is_reload_priv  = ($result_usr['Reload_priv'] == 'Y');
  194.                 }
  195.             } // end while
  196.             PMA_DBI_free_result($rs_usr);
  197.             unset($rs_usr, $result_usr);
  198.         } // end if
  199.     } // end if
  200.     // If the user has Create priv on a inexistant db, show him in the dialog
  201.     // the first inexistant db name that we find, in most cases it's probably
  202.     // the one he just dropped :)
  203.     if (!$is_create_priv) {
  204.         $local_query = 'SELECT DISTINCT Db FROM mysql.db WHERE ' . PMA_convert_using('Create_priv') . ' = ' . PMA_convert_using('Y', 'quoted') . ' AND (' . PMA_convert_using('User') . ' = ' .PMA_convert_using(PMA_sqlAddslashes($mysql_cur_user), 'quoted') . ' OR ' . PMA_convert_using('User') . ' = ' . PMA_convert_using('', 'quoted') . ');';
  205.         $rs_usr      = PMA_DBI_try_query($local_query, $dbh, PMA_DBI_QUERY_STORE);
  206.         if ($rs_usr) {
  207.             $re0     = '(^|(\\\\\\\\)+|[^\])'; // non-escaped wildcards
  208.             $re1     = '(^|[^\])(\\\)+';       // escaped wildcards
  209.             while ($row = PMA_DBI_fetch_assoc($rs_usr)) {
  210.                 if (ereg($re0 . '(%|_)', $row['Db'])
  211.                     || (!PMA_DBI_try_query('USE ' . ereg_replace($re1 . '(%|_)', '\\1\\3', $row['Db'])) && substr(PMA_DBI_getError(), 1, 4) != 1044)) {
  212.                     $db_to_create   = ereg_replace($re0 . '%', '\\1...', ereg_replace($re0 . '_', '\\1?', $row['Db']));
  213.                     $db_to_create   = ereg_replace($re1 . '(%|_)', '\\1\\3', $db_to_create);
  214.                     $is_create_priv = TRUE;
  215.                     break;
  216.                 } // end if
  217.             } // end while
  218.             PMA_DBI_free_result($rs_usr);
  219.             unset($rs_usr, $row, $re0, $re1);
  220.         } // end if
  221.         else {
  222.             // Finally, let's try to get the user's privileges by using SHOW
  223.             // GRANTS...
  224.             // Maybe we'll find a little CREATE priv there :)
  225.             $rs_usr      = PMA_DBI_try_query('SHOW GRANTS FOR ' . $mysql_cur_user_and_host . ';', $dbh, PMA_DBI_QUERY_STORE);
  226.             if (!$rs_usr) {
  227.                 // OK, now we'd have to guess the user's hostname, but we
  228.                 // only try out the 'username'@'%' case.
  229.                 $rs_usr      = PMA_DBI_try_query('SHOW GRANTS FOR ' . $mysql_cur_user . ';', $dbh, PMA_DBI_QUERY_STORE);
  230.             }
  231.             unset($local_query);
  232.             if ($rs_usr) {
  233.                 $re0 = '(^|(\\\\\\\\)+|[^\])'; // non-escaped wildcards
  234.                 $re1 = '(^|[^\])(\\\)+'; // escaped wildcards
  235.                 while ($row = PMA_DBI_fetch_row($rs_usr)) {
  236.                     $show_grants_dbname = substr($row[0], strpos($row[0], ' ON ') + 4,(strpos($row[0], '.', strpos($row[0], ' ON ')) - strpos($row[0], ' ON ') - 4));
  237.                     $show_grants_dbname = ereg_replace('^`(.*)`','\\1',  $show_grants_dbname);
  238.                     $show_grants_str    = substr($row[0],6,(strpos($row[0],' ON ')-6));
  239.                     if (($show_grants_str == 'ALL') || ($show_grants_str == 'ALL PRIVILEGES') || ($show_grants_str == 'CREATE') || strpos($show_grants_str, 'CREATE')) {
  240.                         if ($show_grants_dbname == '*') {
  241.                             $is_create_priv = TRUE;
  242.                             $db_to_create   = '';
  243.                             break;
  244.                         } // end if
  245.                         else if ( (ereg($re0 . '%|_', $show_grants_dbname)
  246.                                   && !ereg('\\\\%|\\\\_', $show_grants_dbname))
  247.                                 || (!PMA_DBI_try_query('USE ' . ereg_replace($re1 .'(%|_)', '\\1\\3', $show_grants_dbname)) && substr(PMA_DBI_getError(), 1, 4) != 1044)
  248.                             ) {
  249.                             $db_to_create = ereg_replace($re0 . '%', '\\1...', ereg_replace($re0 . '_', '\\1?', $show_grants_dbname));
  250.                             $db_to_create = ereg_replace($re1 . '(%|_)', '\\1\\3', $db_to_create);
  251.                             $is_create_priv     = TRUE;
  252.                             break;
  253.                         } // end elseif
  254.                     } // end if
  255.                 } // end while
  256.                 unset($show_grants_dbname, $show_grants_str, $re0, $re1);
  257.                 PMA_DBI_free_result($rs_usr);
  258.                 unset($rs_usr);
  259.             } // end if
  260.         } // end elseif
  261.     } // end if
  262.     else {
  263.         $db_to_create = '';
  264.     } // end else
  265.  
  266.     if (!$cfg['SuggestDBName']) {
  267.         $db_to_create = '';
  268.     }
  269.  
  270.     $common_url_query =  PMA_generate_common_url();
  271.  
  272.     if ($is_superuser) {
  273.         $cfg['ShowMysqlInfo']   = TRUE;
  274.         $cfg['ShowMysqlVars']   = TRUE;
  275.         $cfg['ShowChgPassword'] = TRUE;
  276.     }
  277.     if ($cfg['Server']['auth_type'] == 'config') {
  278.         $cfg['ShowChgPassword'] = FALSE;
  279.     }
  280.  
  281.     // loic1: Displays the MySQL column only if at least one feature has to be
  282.     //        displayed
  283.     if ($is_superuser || $is_create_priv || $is_process_priv || $is_reload_priv
  284.         || $cfg['ShowMysqlInfo'] || $cfg['ShowMysqlVars'] || $cfg['ShowChgPassword']
  285.         || $cfg['Server']['auth_type'] != 'config') {
  286. ?>
  287. <!-- MySQL server related links -->
  288. <table cellpadding="3" cellspacing="0">
  289.     <tr>
  290.         <th class="tblHeaders"<?php echo $str_iconic_colspan; ?>>  MySQL</th>
  291.     </tr>
  292.     <tr><?php
  293.         echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'','b_newdb.png',$strCreateNewDatabase,'') : $str_normal_list); 
  294. ?>
  295.     <!-- db creation form -->
  296.         <td valign="top" align="<?php echo $cell_align_left; ?>" nowrap="nowrap">
  297. <?php
  298.         if ($is_create_priv) {
  299.             // The user is allowed to create a db
  300.             ?>
  301.                 <form method="post" action="db_create.php"><b>
  302.                     <?php echo $strCreateNewDatabase . ' ' . PMA_showMySQLDocu('Reference', 'CREATE_DATABASE'); ?></b><br />
  303.                     <?php echo PMA_generate_common_hidden_inputs('', '', 5); ?>
  304.                     <input type="hidden" name="reload" value="1" />
  305.                     <input type="text" name="db" value="<?php echo $db_to_create; ?>" maxlength="64" class="textfield" />
  306.                     <?php
  307.             if (PMA_MYSQL_INT_VERSION >= 40101) {
  308.                 require_once('./libraries/mysql_charsets.lib.php');
  309.                 echo PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_COLLATION, 'db_collation', NULL, NULL, TRUE, 5);
  310.             }
  311.                     ?>
  312.                     <input type="submit" value="<?php echo $strCreate; ?>" id="buttonGo" />
  313.                 </form>
  314.             <?php
  315.         } else {
  316.             ?>
  317.             <!-- db creation no privileges message -->
  318.                 <b><?php echo $strCreateNewDatabase . ': ' . PMA_showMySQLDocu('Reference', 'CREATE_DATABASE'); ?></b><br />
  319.                 <?php 
  320.                       echo '<span class="noPrivileges">' 
  321.                          . ($cfg['ErrorIconic'] ? '<img src="' . $pmaThemeImage . 's_error2.png" width="11" height="11" hspace="2" border="0" align="middle" />' : '')
  322.                          . '' . $strNoPrivileges .'</span>';
  323.         } // end create db form or message
  324.         ?>
  325.         </td>
  326.     </tr>
  327.         <?php
  328.         echo "\n";
  329.  
  330.         // Server related links
  331.         ?>
  332.         <!-- server-related links -->
  333.         <?php
  334.         if ($cfg['ShowMysqlInfo']) {
  335. ?>
  336.     <tr><?php
  337.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="./server_status.php?'.$common_url_query.'">','s_status.png',$strMySQLShowStatus,'</a>') : $str_normal_list);
  338. ?>
  339.         <td>
  340.                 <a href="./server_status.php?<?php echo $common_url_query; ?>">
  341.                     <?php echo $strMySQLShowStatus . "\n"; ?>
  342.                 </a>
  343.         </td>
  344.     </tr>
  345.             <?php
  346.         } // end if
  347.         if ($cfg['ShowMysqlVars']) {
  348. ?>
  349.     <tr><?php
  350.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="./server_variables.php?'.$common_url_query.'">','s_vars.png',$strMySQLShowVars,'</a>') : $str_normal_list);
  351. ?>
  352.         <td>
  353.                 <a href="./server_variables.php?<?php echo $common_url_query; ?>"><?php echo $strMySQLShowVars;?></a> <?php echo PMA_showMySQLDocu('MySQL_Database_Administration', 'SHOW_VARIABLES') . "\n"; ?>
  354.         </td>
  355.     </tr>
  356.         <?php
  357.         }
  358. ?>
  359.     <tr><?php
  360.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="./server_processlist.php?'.$common_url_query.'">','s_process.png',$strMySQLShowProcess,'</a>') : $str_normal_list);
  361. ?>
  362.         <td>
  363.                 <a href="./server_processlist.php?<?php echo $common_url_query; ?>">
  364.                     <?php echo $strMySQLShowProcess; ?></a> 
  365.                 <?php echo PMA_showMySQLDocu('MySQL_Database_Administration', 'SHOW_PROCESSLIST') . "\n"; ?>
  366.         </td>
  367.     </tr>
  368.         <?php
  369.  
  370.         if (PMA_MYSQL_INT_VERSION >= 40100) {
  371.             echo "\n";
  372.             ?>
  373.     <tr><?php
  374.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="./server_collations.php?'.$common_url_query.'">','s_asci.png',$strCharsetsAndCollations,'</a>') : $str_normal_list); 
  375. ?>
  376.         <td>
  377.                 <a href="./server_collations.php?<?php echo $common_url_query; ?>">
  378.                     <?php echo $strCharsetsAndCollations; ?></a> 
  379.         </td>
  380.     </tr>
  381.             <?php
  382.         }
  383.  
  384.         if ($is_reload_priv) {
  385.             echo "\n";
  386.             ?>
  387.     <tr><?php
  388.             echo '        ' . ($str_iconic_list!='' ? sprintf($str_iconic_list,'<a href="main.php?'.$common_url_query.'&mode=reload">','s_reload.png',$strReloadMySQL,'</a>') : $str_normal_list);  
  389. ?>
  390.         <td>
  391.                 <a href="main.php?<?php echo $common_url_query; ?>&mode=reload">
  392.                     <?php echo $strReloadMySQL; ?></a> 
  393.                 <?php echo PMA_showMySQLDocu('MySQL_Database_Administration', 'FLUSH') . "\n"; ?>
  394.         </td>
  395.     </tr>
  396.             <?php
  397.         }
  398.  
  399.         if ($is_superuser) {
  400.             echo "\n";
  401.             ?>
  402.     <tr><?php
  403.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="server_privileges.php?'.$common_url_query.'">','s_rights.png',$strPrivileges,'</a>') : $str_normal_list);   
  404. ?>
  405.         <td>
  406.                 <a href="server_privileges.php?<?php echo $common_url_query; ?>">
  407.                     <?php echo $strPrivileges; ?></a> 
  408.         </td>
  409.     </tr>
  410.             <?php
  411.         }
  412.         ?>
  413.     <tr><?php
  414.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="server_databases.php?'.$common_url_query.'">','s_db.png',$strDatabases,'</a>') : $str_normal_list);  
  415. ?>
  416.         <td>
  417.                 <a href="./server_databases.php?<?php echo $common_url_query; ?>">
  418.                     <?php echo $strDatabases; ?></a>
  419.         </td>
  420.     </tr>
  421.     <tr>
  422. <?php
  423.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="server_export.php?'.$common_url_query.'">','b_export.png',$strExport,'</a>') : $str_normal_list);
  424. ?>
  425.         <td>
  426.                 <a href="./server_export.php?<?php echo $common_url_query; ?>">
  427.                     <?php echo $strExport; ?></a>
  428.         </td>
  429.     </tr>
  430.         <?php
  431.  
  432.         // Change password (needs another message)
  433.         if ($cfg['ShowChgPassword']) {
  434.             echo "\n";
  435.             ?>
  436.     <tr>
  437. <?php
  438.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="user_password.php?'.$common_url_query.'">','s_passwd.png',$strChangePassword,'</a>') : $str_normal_list);
  439. ?>
  440.         <td>
  441.                 <a href="user_password.php?<?php echo $common_url_query; ?>">
  442.                     <?php echo ($strChangePassword); ?></a>
  443.         </td>
  444.     </tr>
  445.             <?php
  446.         } // end if
  447.  
  448.         // Logout for advanced authentication
  449.         if ($cfg['Server']['auth_type'] != 'config') {
  450.             $http_logout = ($cfg['Server']['auth_type'] == 'http')
  451.                          ? "\n" 
  452. . '                <a href="./Documentation.html#login_bug" target="documentation">'
  453.                          . ($cfg['ReplaceHelpImg'] ? '<img src="' . $pmaThemeImage . 'b_info.png" width="11" height="11" border="0" alt="Info" align="middle" />' : '(*)') . '</a>'
  454.                          : '';
  455.             echo "\n";
  456.             ?>
  457.     <tr>
  458. <?php
  459.             echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="index.php?'.$common_url_query.'&old_usr='.urlencode($PHP_AUTH_USER).'">','s_loggoff.png',$strChangePassword,'</a>') : $str_normal_list);
  460. ?>
  461.         <td>
  462.  
  463.                 <a href="index.php?<?php echo $common_url_query; ?>&old_usr=<?php echo urlencode($PHP_AUTH_USER); ?>" target="_parent">
  464.                     <b><?php echo $strLogout; ?></b></a> <?php echo $http_logout . "\n"; ?>
  465.         </td>
  466.     </tr>
  467.             <?php
  468.         } // end if
  469.         ?>
  470. </table>
  471. <?php
  472.     } // end if
  473. } // end of if ($server > 0)
  474. echo "\n";
  475.  
  476. ?>
  477. </td>
  478. <td width="20"> </td>
  479. <td valign="top">
  480. <table border="0" cellpadding="3" cellspacing="0">
  481.     <tr>
  482.         <th class="tblHeaders"<?php echo $str_iconic_colspan; ?>>  phpMyAdmin</th>
  483.     </tr>
  484. <?php
  485. // Displays language selection combo
  486. if (empty($cfg['Lang'])) {
  487.     ?>
  488.     <!-- Language Selection -->
  489.     <tr><?php
  490.         echo '        ' . ($str_iconic_list !='' ? sprintf($str_iconic_list,'<a href="./translators.html" target="documentation">','s_lang.png','Language','</a>') : $str_normal_list); 
  491. ?>
  492.         <td nowrap="nowrap">
  493.             <form method="post" action="index.php" target="_parent">
  494.                 <input type="hidden" name="convcharset" value="<?php echo $convcharset; ?>" />
  495.                 <input type="hidden" name="server" value="<?php echo $server; ?>" />
  496.                 Language <a href="./translators.html" target="documentation"><?php
  497.                 if ($cfg['ReplaceHelpImg']){
  498.                     echo '<img src="' . $pmaThemeImage . 'b_info.png" border="0" width="11" height="11" alt="Info" hspace="1" vspace="1" />';
  499.                 }else{ echo '(*)'; }
  500. ?></a>: <select name="lang" dir="ltr" onchange="this.form.submit();" style="vertical-align: middle">
  501.     <?php
  502.     echo "\n";
  503.  
  504.     /**
  505.      * Sorts available languages by their true names
  506.      *
  507.      * @param   array   the array to be sorted
  508.      * @param   mixed   a required parameter
  509.      *
  510.      * @return  the sorted array
  511.      *
  512.      * @access  private
  513.      */
  514.     function PMA_cmp(&$a, $b)
  515.     {
  516.         return (strcmp($a[1], $b[1]));
  517.     } // end of the 'PMA_cmp()' function
  518.  
  519.     uasort($available_languages, 'PMA_cmp');
  520.     foreach ($available_languages AS $id => $tmplang) {
  521.         $lang_name = ucfirst(substr(strstr($tmplang[0], '|'), 1));
  522.         if ($lang == $id) {
  523.             $selected = ' selected="selected"';
  524.         } else {
  525.             $selected = '';
  526.         }
  527.         echo '                        ';
  528.         echo '<option value="' . $id . '"' . $selected . '>' . $lang_name . ' (' . $id . ')</option>' . "\n";
  529.     }
  530.     ?>
  531.                 </select>
  532.                 <noscript><input type="submit" value="Go" style="vertical-align: middle" /></noscript>
  533.             </form>
  534.         </td>
  535.     </tr>
  536.        
  537.     <?php
  538. }
  539.  
  540. if (isset($cfg['AllowAnywhereRecoding']) && $cfg['AllowAnywhereRecoding']
  541.     && $allow_recoding && PMA_MYSQL_INT_VERSION < 40100) {
  542.     echo "\n";
  543. ?>
  544.     <!-- Charset Selection -->
  545.     <tr><?php
  546.         echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'','s_asci.png',$strMySQLCharset,'') : $str_normal_list);
  547. ?>
  548.         <td>
  549.             <form method="post" action="index.php" target="_parent">
  550.                 <input type="hidden" name="server" value="<?php echo $server; ?>" />
  551.                 <input type="hidden" name="lang" value="<?php echo $lang; ?>" />
  552.                 <?php echo $strMySQLCharset;?>:
  553.                 <select name="convcharset" dir="ltr" onchange="this.form.submit();" style="vertical-align: middle">
  554.     <?php
  555.     echo "\n";
  556.     foreach ($cfg['AvailableCharsets'] AS $id => $tmpcharset) {
  557.         if ($convcharset == $tmpcharset) {
  558.             $selected = ' selected="selected"';
  559.         } else {
  560.             $selected = '';
  561.         }
  562.         echo '                        '
  563.            . '<option value="' . $tmpcharset . '"' . $selected . '>' . $tmpcharset . '</option>' . "\n";
  564.     }
  565.     ?>
  566.                 </select>
  567.                 <noscript><input type="submit" value="Go" style="vertical-align: middle" /></noscript>
  568.             </form>
  569.         </td>
  570.     </tr>
  571.     <?php
  572. } elseif (PMA_MYSQL_INT_VERSION >= 40100) {
  573.     echo '    <!-- Charset Info -->' . "\n"
  574.        . '    <tr>' .  "\n"
  575.        .'        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'','s_asci.png',$strMySQLCharset,'') : $str_normal_list) . "\n" 
  576.        . '        <td>' . "\n"
  577.        . '            ' . $strMySQLCharset . ': '
  578.        . '            <b>'
  579.        . '               ' . $mysql_charsets_descriptions[$mysql_charset_map[strtolower($charset)]] . "\n"
  580.        . '               (' . $mysql_charset_map[strtolower($charset)] . ')' . "\n"
  581.        . '            </b>' . "\n"
  582.        . '        </td>' . "\n"
  583.        . '    </tr>' . "\n"
  584.        . '    <!-- MySQL Connection Collation -->' . "\n"
  585.        . '    <tr>' .  "\n"
  586.        .'        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'','s_asci.png',$strMySQLCharset,'') : $str_normal_list) . "\n" 
  587.        . '        <td>' . "\n"
  588.        . '            <form method="post" action="index.php" target="_parent">' . "\n"
  589.        . PMA_generate_common_hidden_inputs(NULL, NULL, 4, 'collation_connection')
  590.        . '                <label for="select_collation_connection">' . "\n"
  591.        . '                    ' . $strMySQLConnectionCollation . ': ' . "\n"
  592.        . '                </label>' . "\n"
  593.        . PMA_generateCharsetDropdownBox(PMA_CSDROPDOWN_COLLATION, 'collation_connection', 'select_collation_connection', $collation_connection, TRUE, 4, TRUE)
  594.        . '                <noscript><input type="submit" value="' . $strGo . '" style="vertical-align: middle" /></noscript>' . "\n"
  595.        // put the doc link in the form so that it appears on the same line
  596.        . PMA_showMySQLDocu('MySQL_Database_Administration', 'Charset-connection') . "\n"
  597.        . '            </form>' . "\n"
  598.        . '        </td>' . "\n"
  599.        . '    </tr>' . "\n";
  600. }
  601. echo "\n";
  602.  
  603. // added by Michael Keck <mail_at_michaelkeck_dot_de>
  604. // ThemeManager if available
  605.  
  606. if (isset($available_themes_choices) && $available_themes_choices > 1) {
  607.     $theme_selected = FALSE;
  608.     $theme_preview_path= './themes.php';
  609.     $theme_preview_href = '<a href="' . $theme_preview_path . '" target="themes" onclick="'
  610.                         . "window.open('" . $theme_preview_path . "','themes','left=10,top=20,width=510,height=350,scrollbars=yes,status=yes,resizable=yes');"
  611.                         . '">';
  612. ?>
  613.     <!-- Theme Manager -->
  614.     <tr>
  615. <?php
  616.         echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,$theme_preview_href,'s_theme.png',(isset($strTheme) ? $strTheme : 'Theme (Style)'),'</a>') : $str_normal_list) . "\n";
  617. ?>
  618.         <td>
  619.             <form name="setTheme" method="post" action="index.php" target="_parent">
  620.                 <?php 
  621.                 echo PMA_generate_common_hidden_inputs('', '', 5);
  622.                 echo $theme_preview_href
  623.                    . (isset($strTheme) ? $strTheme : 'Theme (Style)')
  624.                    . '</a>:' . "\n";
  625.                 ?> 
  626.                 <select name="set_theme" dir="ltr" onchange="this.form.submit();" style="vertical-align: middle">
  627.                 <?php
  628.                     foreach ($available_themes_choices AS $cur_theme) {
  629.                         echo '<option value="' . $cur_theme . '"';
  630.                         if ($cur_theme == $theme) {
  631.                             echo ' selected="selected"';
  632.                         }
  633.                         echo '>' . htmlspecialchars($available_themes_choices_names[$cur_theme]) . '</option>';
  634.                     }
  635.                 ?>
  636.                 </select>
  637.                 <noscript><input type="submit" value="Go" style="vertical-align: middle" /></noscript>
  638.             </form>
  639.         </td>
  640.     </tr>
  641. <?php
  642. }
  643. ?>
  644.     <!-- Documentation -->
  645.     <tr><?php
  646.         echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="Documentation.html" target="documentation">','b_docs.png',$strPmaDocumentation,'</a>') : $str_normal_list); 
  647. ?>
  648.         <td nowrap="nowrap">
  649.             <a href="Documentation.html" target="documentation"><b><?php echo $strPmaDocumentation; ?></b></a>
  650.         </td>
  651.     </tr>
  652.  
  653. <?php
  654. if ($is_superuser || $cfg['ShowPhpInfo']) {
  655.     ?>
  656.     <!-- PHP Information -->
  657.     <tr><?php
  658.         echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="phpinfo.php?' . PMA_generate_common_url() . '" target="_blank">','php_sym.png',$strShowPHPInfo,'</a>') : $str_normal_list);  
  659. ?>
  660.         <td nowrap="nowrap">
  661.             <a href="phpinfo.php?<?php echo PMA_generate_common_url(); ?>" target="_blank"><?php echo $strShowPHPInfo; ?></a>
  662.         </td>
  663.     </tr>
  664.     <?php
  665. }
  666. echo "\n";
  667. ?>
  668.  
  669.         <!-- phpMyAdmin related urls -->
  670.     <tr><?php
  671.         echo '        ' . ($str_iconic_list != '' ? sprintf($str_iconic_list,'<a href="http://www.phpMyAdmin.net/" target="_blank">','b_home.png',$strHomepageOfficial,'</a>') : $str_normal_list);  
  672. ?>
  673.         <td nowrap="nowrap">
  674.             <a href="http://www.phpMyAdmin.net/" target="_blank"><?php echo $strHomepageOfficial; ?></a>
  675.        </td>
  676.     </tr> 
  677.     <tr>
  678. <?php
  679.         echo '<td><img src="' .$GLOBALS['pmaThemeImage'] . 'spacer.png'  . '" width="1" height="1" border="0" /></td>'; 
  680. ?>
  681.        <td nowrap="nowrap">
  682.             [<a href="changelog.php" target="_blank">ChangeLog</a>]
  683.                [<a href="http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/phpmyadmin/phpMyAdmin/" target="_blank">CVS</a>]
  684.                [<a href="http://sourceforge.net/mail/?group_id=23067" target="_blank">Lists</a>]
  685.        </td>
  686.     </tr>
  687. </table>
  688.  
  689. </td>
  690. </tr>
  691. </table>
  692.  
  693. <hr />
  694.  
  695.  
  696. <?php
  697. /**
  698.  * Displays the "empty $cfg['PmaAbsoluteUri'] warning"
  699.  * modified: 2004-05-05 mkkeck
  700.  */
  701. if ($display_pmaAbsoluteUri_warning) {
  702.     echo '<div class="warning">' . $strPmaUriError . '</div>' . "\n";
  703. }
  704.  
  705. /**
  706.  * Warning if using the default MySQL privileged account
  707.  * modified: 2004-05-05 mkkeck
  708.  */
  709. if ($server != 0
  710.     && $cfg['Server']['user'] == 'root'
  711.     && $cfg['Server']['password'] == '') {
  712.     echo '<div class="warning">' . $strInsecureMySQL . '</div>' . "\n";
  713. }
  714.  
  715. /**
  716.  * Warning for PHP 4.2.3
  717.  * modified: 2004-05-05 mkkeck
  718.  */
  719.  
  720. if (PMA_PHP_INT_VERSION == 40203 && @extension_loaded('mbstring')) {
  721.     echo '<div class="warning">' . $strPHP40203 . '</div>' . "\n";
  722. }
  723.  
  724. /**
  725.  * Warning for old PHP version
  726.  * modified: 2004-05-05 mkkeck
  727.  */
  728.  
  729. if (PMA_PHP_INT_VERSION < 40100) {
  730.     echo '<div class="warning">' . sprintf($strUpgrade, 'PHP', '4.1.0') . '</div>' . "\n";
  731. }
  732.  
  733. /**
  734.  * Warning for old MySQL version
  735.  * modified: 2004-05-05 mkkeck
  736.  */
  737. // not yet defined before the server choice
  738. if (defined('PMA_MYSQL_INT_VERSION') && PMA_MYSQL_INT_VERSION < 32332) {
  739.     echo '<div class="warning">' . sprintf($strUpgrade, 'MySQL', '3.23.32') . '</div>' . "\n";
  740. }
  741. /**
  742.  * Displays the footer
  743.  */
  744. echo "\n";
  745. require_once('./footer.inc.php');
  746. ?>
  747.